package socketmvc.core.packets.basic;

import socketmvc.core.util.TypeReference;

import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.BigInteger;

public interface TextBody {

    <T> T toJavaObject(Class<T> clazz);
    <T> T toJavaObject(Type type);
    <T> T toJavaObject(TypeReference<T> type);
    String getString(String key);
    BigDecimal getBigDecimal(String key);
    int getIntValue(String key);
    Integer getInteger(String key);
    BigInteger getBigInteger(String key);
    long getLongValue(String key);
    Long getLong(String key);
    double getDoubleValue(String key);
    Double getDouble(String key);
    float getFloatValue(String key);
    Float getFloat(String key);
    short getShortValue(String key);
    Short getShort(String key);
    boolean getBooleanValue(String key);
    Boolean getBoolean(String key);
    Byte getByte(String key);
    byte getByteValue(String key);

    <T> T getObject(String key, Class<T> clazz);
    <T> T getObject(String key, Type type);
    <T> T getObject(String key, TypeReference<T> typeReference);
}
